package utfpr.gang5.hermes.controledepresenca.services.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Restrictions;

import utfpr.gang5.hermes.controledepresenca.dao.CrudException;
import utfpr.gang5.hermes.controledepresenca.dao.GenericCrud;
import utfpr.gang5.hermes.controledepresenca.pojo.Usuario;
import utfpr.gang5.hermes.controledepresenca.services.UsuarioService;
import utfpr.gang5.hermes.controledepresenca.util.HibernateUtil;

public class HibernateUsuarioServiceImpl extends GenericCrud<Usuario> implements
		UsuarioService {

	public HibernateUsuarioServiceImpl() {
	}

	@Override
	public Usuario carregar(Long id) throws CrudException {
		return carregar(Usuario.class, id);
	}

	@Override
	public List<Usuario> carregarTodos() throws CrudException {
		return carregarTodos(Usuario.class);
	}

	@Override
	public Usuario buscarPorUsername(String username) throws CrudException {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		Criteria c1 = session.createCriteria(Usuario.class);
		c1.add(Restrictions.eq("username", username));
		
		Object result = c1.uniqueResult();

		return (Usuario) result;
		
	}

}
